# 地图棋盘，内含Position和Msg信息mapx[Position]=Col*Row个Msg
from Msg import Msg


class Board:
    mapx = []  # Msg[ROW][COL]

    def __init__(self, mapp, target_position):
        for i in range(len(mapp)):
            self.mapx.append([])
            for j in range(len(mapp[0])):
                self.mapx[i].append(Msg())  # 是Msg()而不是Msg,否则是一个新的对象，mapx中所有信息同步变动
                self.mapx[i][j].IsUnk = 1 - mapp[i][j]
                # 有很多万法可以估算H值。这里找们使用Manhattan万法，
                # 计算从当前万格横可或纵回移动到达目标所经过的方格数，忽略对角移动，然后把总数乘以10。
                self.mapx[i][j].H = 10 * (abs(target_position.x - i) + abs(target_position.y - j))

        # for k in range(len(self.mapx)):
        #     for m in range(len(self.mapx[k])):
        #         print(self.mapx[k][m].H,end=" ")
        #     print('')
        # print('')

    def GetMsg(self, pos):  # 根据Position通过mapx获得Msg
        return self.mapx[pos.x][pos.y]
